Metoda folosita va fi divide et impera.
Trasam o dreapta  , verticala sau orizontala dupa caz , daca mai mult de N/2 drepte
din multimea actuala de puncte sunt coliniare. 

La reuniunea submultimilor pentru a afla solutia este necesar sa vedem , pe langa
lungimile minime din cele 2 submultimi , o alta lungimie minima dintre oricare
 2 puncte din cele 2 submultimi. Ne vom folosi de faptul ca daca exista o lungime
mai mica decat cea gasita anterior punctele se afla la distnta mai mica de dist_min.

Vom tine un vector sortat dupa x si unul dupa y la fiecare pas si se poate 
demonstra ca este necesar sa tinem pentru orice punct din partea drepta doar
urmatoarele 7 puncte mai mari decat actualul punct. Astfel determinarea celui mai 
apropiat punct facundu-se in costanta de 2*7 op la fiecare pas.

Alta rezolvare posibila este folosirea unui arobore de intervale cu distantele
minime, abordare care permite si retinearea pe timpul rezolvarii a distatelor 
dintre puncte din submultime.

Desi pare solutia optima , cu ajutorul demonstratiei distantei celor 7 puncte
solutia optima este in O(N lg N), fara folosirea divide et impera. Sorarea se 
va face dupa suma coordonatelor. ( a.x + a.y )


Code:

#define DIST 16

for(i = 1; i<=N; ++i)
	for(j = i + 1; j <= i + DIST && j<=n; ++j)
		rez = min(rez, dist( i , j ) );

#undef DIST